from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

# from langchain_openai import ChatOpenAI
# llm = ChatOpenAI(temperature=0, model="gpt-4o")
from langchain_community.chat_models import ChatZhipuAI
llm = ChatZhipuAI(temperature=0, model="glm-4")

# 搜索工具
from langchain_community.tools.tavily_search import TavilySearchResults
searcher = TavilySearchResults()
# 查询天气预报工具
from tools.amap import get_wx
# 获取指定地区的编码工具
from tools.excel import query_adcode
# 获取当前日期工具
from tools.commutils import get_current_date
# 构建工具集
tools = [query_adcode, get_wx, get_current_date, searcher]

# 取得提示词
from langchain.prompts import PromptTemplate
with open("prompt.txt", 'r', encoding='utf-8') as f:
    prompt = PromptTemplate.from_template(f.read())

# 创建ReAct型智能体实例
from langchain.agents import create_react_agent
agent = create_react_agent(llm, tools, prompt)

# 创建智能体执行器
from langchain.agents import AgentExecutor
agent_executor = AgentExecutor(
    agent=agent,    # 每一步执行过程中使用的智能体
    tools=tools,    # 智能体可使用的工具集
    verbose=True,   # 启用verbose模式
    handle_parsing_errors=True  # 输出解析器发生错误处理方式
    )

# 测试智能体
question = "明天我想去北京玩三天。"
agent_executor.invoke({
    "input": f"{question}"
})